package com.neuedu.corejava.ch8;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;

import javax.swing.plaf.metal.MetalIconFactory.FileIcon16;

import org.omg.CORBA.portable.InputStream;



public class TestCheckExceptiion {
	public static void main(String[] args) {
		// check exception 和 runtime exception
		Scanner scanner=new Scanner(System.in);
		int a=scanner.nextInt();
		int b =scanner.nextInt();
		//java.lang.ArithmeticException 可能发生RuntimeException
		//RuntimeException 可以不进行异常处理
		/*
		 * if(b==0) { System.out.println("除数不能为0默认为除1"); b=1; }
		 */
		try {
			if(b==0) { 
				System.out.println("除数不能为0默认为除1");
				b=1;
			}
			int c=a/b;
			System.out.println(c);
		} catch (ArithmeticException e) {//使用catch捕获异常时，可以捕获特性的异常或该异常的父异常
			System.out.println("发生了算术运算异常！");
			e.printStackTrace();//查看内存的出错信息，打印堆栈信息
		}
		
		//编写一段代码，读取某个java程序，并把读取的代码显示到控制台
		//1.文件定位，找文件--文件操作
		File file=new File("D:\\java11workspace\\corejava\\src\\com\\neuedu\\corejava\\ch7\\PartInner.java");
		if(file.exists()) {
			//2.读内容--文件内容操作
			//内容的读取是按位操作的，bit->byte
			//使用文件流的方式进行读取
			FileInputStream inputStream=null;
			try {
				//使用异常捕获方法，在main方法中处理异常，
			    inputStream=new FileInputStream(file);//检查异常，如果不进行处理，则无法通过编译器检查，无法生成class文件
				byte[]buffer=new byte[128];
				int length=inputStream.read(buffer);//read方法进行文件读取，如果文件读完会返回-1
				while(length>0) {//while 循环用于循环次数不确定的情况
					String s=new String(buffer, 0, length);//把读取的数据转换为字符串
					System.out.println(s);
					length=inputStream.read(buffer);
				}
				System.out.println();//程序文件读取后，换行
				
			} catch (FileNotFoundException e) {
				e.printStackTrace();//在异常处理中，可以通过打印堆栈信息，查询程序错误信息，并进行代码处理（给用户进行操作 或 指引用户进行其他操作）
			}catch (IOException e) {//一个try代码块中，可能发生多个异常，可以使用多个catch块进行异常捕获
				e.printStackTrace();
			}finally {//finally代码块跟在try块后，用于执行不管是否发生异常都要运行的代码：finally的代码一定会执行
				if(inputStream!=null) {
					try {
						inputStream.close();
					} catch (IOException e) {
						
					}
					
				}
			}
			
		}
		
		
		System.out.println("main方法执行完毕！");
	}

}
